/**
 * 全屏模式类；
 * 封装了一些通用方法；
 */
class FullScreen {
  /**
   * 进入全屏模式
   * @param ele 需要进入全屏的元素
   */
  enter(ele: HTMLElement) {
    // 如果浏览器支持requestFullscreen方法，则调用该方法
    ele.requestFullscreen ?? ele.requestFullscreen()
  }

  /**
   * 退出全屏模式
   */
  exit() {
    // 如果浏览器支持exitFullscreen方法，则调用该方法
    document.exitFullscreen ?? document.exitFullscreen()
  }

  /**
   * 获取当前全屏元素
   * @returns 当前全屏元素，如果没有全屏元素，则返回null
   */
  fullEle() {
    return document.fullscreenElement
  }

  /**
   * 判断当前是否全屏
   * @returns true: 全屏模式，false: 非全屏模式
   */
  isFull() {
    return !!document.fullscreenElement
  }

  /**
   * 切换全屏模式
   * @param ele 需要切换全屏的元素
   */
  toggle(ele: HTMLElement) {
    // 如果当前是全屏模式，则退出全屏模式，否则进入全屏模式
    this.isFull() ? this.exit() : this.enter(ele)
  }
}

export default new FullScreen()
